package uiMain;

import gestorbienraizok.inmuebles.Inmueble;
import static gestorbienraizok.inmuebles.Inmueble.buscarInmueble;
import java.util.Scanner;
import static uiMain.bienRaizOk.entrada;

public class OpcionAsignarRolAUnaPropiedad extends OpcionDeMenu {

    private String nombreParaMostrar = " Asignar rol a una propiedad (venta, arriendo, ambos o ninguno)";

    @Override
    public void ejecutar() {
        System.out.print("Ingrese el código de la propiedad a la que le desea modificar el rol: ");
        String codigo;
        entrada = new Scanner(System.in);
        codigo = entrada.nextLine();
        Inmueble esteInmueble = buscarInmueble(codigo);

        while (esteInmueble == null) {
            System.out.println("No hay ningún inmueble con el código " + codigo + ", si desea salir, escriba 'S' a continuación.");
            System.out.print("Ingrese el código de la propiedad a la que le desea modificar el rol: ");
            entrada = new Scanner(System.in);
            codigo = entrada.nextLine();
            if (codigo.charAt(0) == 's' || codigo.charAt(0) == 'S') {
                return;
            }
            esteInmueble = buscarInmueble(codigo);
        }

        System.out.println("Actualmente el rol de esta propiedad es " + esteInmueble.getRol().toLowerCase());
        byte rol;
        if (esteInmueble.getDisponibilidad().equals("Disponible")) {
            do {
                System.out.print("Seleccione un rol: venta (1), arriendo (2), ambos (3), o no disponible (4): ");
                rol = entrada.nextByte();
            } while (rol < 1 || rol > 4);
            long precioDeVenta = 0;
            long tarifaDeArrendamiento = 0;
            switch (rol) {
                case 1:
                    do {
                        System.out.print("Ingrese el precio de venta: $");
                        precioDeVenta = entrada.nextLong();
                    } while (precioDeVenta < 0);
                    break;
                case 2:
                    do {
                        System.out.print("Ingrese la tarifa mensual: $");
                        tarifaDeArrendamiento = entrada.nextLong();
                    } while (tarifaDeArrendamiento < 0);
                    break;
                case 3:
                    do {
                        System.out.print("Ingrese el precio de venta: $");
                        precioDeVenta = entrada.nextLong();
                    } while (precioDeVenta < 0);
                    
                    do {
                        System.out.print("Ingrese la tarifa mensual de arrendamiento: $");
                        tarifaDeArrendamiento = entrada.nextLong();
                    } while (tarifaDeArrendamiento < 0);
                    break;
                case 4:
                    break;
            }
            esteInmueble.setRol(rol);
            esteInmueble.setPrecioDeVenta(precioDeVenta);
            esteInmueble.setTarifaDeArrendamiento(tarifaDeArrendamiento);
        }
        else{
            System.out.println("No se le puede cambiar el rol a esta propiedad porque ya fue " + esteInmueble.getDisponibilidad().toLowerCase());
        }
    }

    @Override
    public String toString() {
        return nombreParaMostrar;
    }
    
    @Override
    public String toStringParaMostrarElNivel() {
        return nombreParaMostrar.trim().concat("...................................................................").substring(0,67) + "Funcionarios";
    }

}
